package io;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.nio.charset.StandardCharsets;

/**
 * 转换流:InputStreamReader/OutputStreamWriter  继承Reader/Writer
 * 转换流是非常常用的字符流实现类，但实际开发中我们不会直接操作这两个流
 * 但是它们再流连接中是非常重要的一环
 *
 * 再流连接中的意义
 * 由于其它字符流再流连接中要求只能连接再其它字符流上，而不能直接连接在字节流上
 * 原因:字符流是以字符为单位读写，而字节流是以字节为单位读写
 *     读写单位不同，因此不能直接串联在一起工作
 * 转换流是一对字符流，并且是唯一可以直接连接在字节流上的字符流
 * 因此其他字符流都只能连接在转换流上，而转换再连接再字节流上，实现串联起写读/读写
 */
public class OSWDemo {
    public static void main(String[] args) throws IOException {
        FileOutputStream fos = new FileOutputStream("osw.txt");
        //创建转换流时通常会指定第2个参数来明确字符集，以此保证跨平台性
        OutputStreamWriter osw = new OutputStreamWriter(fos, StandardCharsets.UTF_8);

        osw.write("啦啦啦，我是一个行家");
        osw.write("买着报纸买着花");
        System.out.println("写出完毕");
        osw.close();//关闭高级流是会自动关闭低价流
    }
}
